#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
"""This package is deprecated. Please use `airflow.hooks` or `airflow.providers.*.hooks`."""

from __future__ import annotations

import warnings

from airflow.exceptions import RemovedInAirflow3Warning
from airflow.utils.deprecation_tools import add_deprecated_classes

warnings.warn(
    "This package is deprecated. Please use `airflow.hooks` or `airflow.providers.*.hooks`.",
    RemovedInAirflow3Warning,
    stacklevel=2,
)

__deprecated_classes = {
    "aws_athena_hook": {
        "AWSAthenaHook": "airflow.providers.amazon.aws.hooks.athena.AthenaHook",
    },
    "aws_datasync_hook": {
        "AWSDataSyncHook": "airflow.providers.amazon.aws.hooks.datasync.DataSyncHook",
    },
    "aws_dynamodb_hook": {
        "AwsDynamoDBHook": "airflow.providers.amazon.aws.hooks.dynamodb.DynamoDBHook",
    },
    "aws_firehose_hook": {
        "FirehoseHook": "airflow.providers.amazon.aws.hooks.kinesis.FirehoseHook",
    },
    "aws_glue_catalog_hook": {
        "AwsGlueCatalogHook": "airflow.providers.amazon.aws.hooks.glue_catalog.GlueCatalogHook",
    },
    "aws_hook": {
        "AwsBaseHook": "airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook",
        "_parse_s3_config": "airflow.providers.amazon.aws.hooks.base_aws._parse_s3_config",
        "boto3": "airflow.providers.amazon.aws.hooks.base_aws.boto3",
        "AwsHook": "airflow.providers.amazon.aws.hooks.base_aws.AwsBaseHook",
    },
    "aws_lambda_hook": {
        "AwsLambdaHook": "airflow.providers.amazon.aws.hooks.lambda_function.LambdaHook",
    },
    "aws_logs_hook": {
        "AwsLogsHook": "airflow.providers.amazon.aws.hooks.logs.AwsLogsHook",
    },
    "aws_sns_hook": {
        "AwsSnsHook": "airflow.providers.amazon.aws.hooks.sns.SnsHook",
    },
    "aws_sqs_hook": {
        "SqsHook": "airflow.providers.amazon.aws.hooks.sqs.SqsHook",
        "SQSHook": "airflow.providers.amazon.aws.hooks.sqs.SqsHook",
    },
    "azure_container_instance_hook": {
        "AzureContainerInstanceHook": (
            "airflow.providers.microsoft.azure.hooks.container_instance.AzureContainerInstanceHook"
        ),
    },
    "azure_container_registry_hook": {
        "AzureContainerRegistryHook": (
            "airflow.providers.microsoft.azure.hooks.container_registry.AzureContainerRegistryHook"
        ),
    },
    "azure_container_volume_hook": {
        "AzureContainerVolumeHook": (
            "airflow.providers.microsoft.azure.hooks.container_volume.AzureContainerVolumeHook"
        ),
    },
    "azure_cosmos_hook": {
        "AzureCosmosDBHook": "airflow.providers.microsoft.azure.hooks.cosmos.AzureCosmosDBHook",
    },
    "azure_data_lake_hook": {
        "AzureDataLakeHook": "airflow.providers.microsoft.azure.hooks.data_lake.AzureDataLakeHook",
    },
    "azure_fileshare_hook": {
        "AzureFileShareHook": "airflow.providers.microsoft.azure.hooks.fileshare.AzureFileShareHook",
    },
    "bigquery_hook": {
        "BigQueryBaseCursor": "airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor",
        "BigQueryConnection": "airflow.providers.google.cloud.hooks.bigquery.BigQueryConnection",
        "BigQueryCursor": "airflow.providers.google.cloud.hooks.bigquery.BigQueryCursor",
        "BigQueryHook": "airflow.providers.google.cloud.hooks.bigquery.BigQueryHook",
        "GbqConnector": "airflow.providers.google.cloud.hooks.bigquery.GbqConnector",
    },
    "cassandra_hook": {
        "CassandraHook": "airflow.providers.apache.cassandra.hooks.cassandra.CassandraHook",
    },
    "cloudant_hook": {
        "CloudantHook": "airflow.providers.cloudant.hooks.cloudant.CloudantHook",
    },
    "databricks_hook": {
        "CANCEL_RUN_ENDPOINT": "airflow.providers.databricks.hooks.databricks.CANCEL_RUN_ENDPOINT",
        "GET_RUN_ENDPOINT": "airflow.providers.databricks.hooks.databricks.GET_RUN_ENDPOINT",
        "RESTART_CLUSTER_ENDPOINT": "airflow.providers.databricks.hooks.databricks.RESTART_CLUSTER_ENDPOINT",
        "RUN_LIFE_CYCLE_STATES": "airflow.providers.databricks.hooks.databricks.RUN_LIFE_CYCLE_STATES",
        "RUN_NOW_ENDPOINT": "airflow.providers.databricks.hooks.databricks.RUN_NOW_ENDPOINT",
        "START_CLUSTER_ENDPOINT": "airflow.providers.databricks.hooks.databricks.START_CLUSTER_ENDPOINT",
        "SUBMIT_RUN_ENDPOINT": "airflow.providers.databricks.hooks.databricks.SUBMIT_RUN_ENDPOINT",
        "TERMINATE_CLUSTER_ENDPOINT": (
            "airflow.providers.databricks.hooks.databricks.TERMINATE_CLUSTER_ENDPOINT"
        ),
        "DatabricksHook": "airflow.providers.databricks.hooks.databricks.DatabricksHook",
        "RunState": "airflow.providers.databricks.hooks.databricks.RunState",
    },
    "datadog_hook": {
        "DatadogHook": "airflow.providers.datadog.hooks.datadog.DatadogHook",
    },
    "datastore_hook": {
        "DatastoreHook": "airflow.providers.google.cloud.hooks.datastore.DatastoreHook",
    },
    "dingding_hook": {
        "DingdingHook": "airflow.providers.dingding.hooks.dingding.DingdingHook",
        "requests": "airflow.providers.dingding.hooks.dingding.requests",
    },
    "discord_webhook_hook": {
        "DiscordWebhookHook": "airflow.providers.discord.hooks.discord_webhook.DiscordWebhookHook",
    },
    "emr_hook": {
        "EmrHook": "airflow.providers.amazon.aws.hooks.emr.EmrHook",
    },
    "fs_hook": {
        "FSHook": "airflow.hooks.filesystem.FSHook",
    },
    "ftp_hook": {
        "FTPHook": "airflow.providers.ftp.hooks.ftp.FTPHook",
        "FTPSHook": "airflow.providers.ftp.hooks.ftp.FTPSHook",
    },
    "gcp_api_base_hook": {
        "GoogleBaseHook": "airflow.providers.google.common.hooks.base_google.GoogleBaseHook",
        "GoogleCloudBaseHook": "airflow.providers.google.common.hooks.base_google.GoogleBaseHook",
    },
    "gcp_bigtable_hook": {
        "BigtableHook": "airflow.providers.google.cloud.hooks.bigtable.BigtableHook",
    },
    "gcp_cloud_build_hook": {
        "CloudBuildHook": "airflow.providers.google.cloud.hooks.cloud_build.CloudBuildHook",
    },
    "gcp_compute_hook": {
        "ComputeEngineHook": "airflow.providers.google.cloud.hooks.compute.ComputeEngineHook",
        "GceHook": "airflow.providers.google.cloud.hooks.compute.ComputeEngineHook",
    },
    "gcp_container_hook": {
        "GKEHook": "airflow.providers.google.cloud.hooks.kubernetes_engine.GKEHook",
        "GKEClusterHook": "airflow.providers.google.cloud.hooks.kubernetes_engine.GKEHook",
    },
    "gcp_dataflow_hook": {
        "DataflowHook": "airflow.providers.google.cloud.hooks.dataflow.DataflowHook",
        "DataFlowHook": "airflow.providers.google.cloud.hooks.dataflow.DataflowHook",
    },
    "gcp_dataproc_hook": {
        "DataprocHook": "airflow.providers.google.cloud.hooks.dataproc.DataprocHook",
        "DataProcHook": "airflow.providers.google.cloud.hooks.dataproc.DataprocHook",
    },
    "gcp_dlp_hook": {
        "CloudDLPHook": "airflow.providers.google.cloud.hooks.dlp.CloudDLPHook",
        "DlpJob": "airflow.providers.google.cloud.hooks.dlp.DlpJob",
    },
    "gcp_function_hook": {
        "CloudFunctionsHook": "airflow.providers.google.cloud.hooks.functions.CloudFunctionsHook",
        "GcfHook": "airflow.providers.google.cloud.hooks.functions.CloudFunctionsHook",
    },
    "gcp_kms_hook": {
        "CloudKMSHook": "airflow.providers.google.cloud.hooks.kms.CloudKMSHook",
        "GoogleCloudKMSHook": "airflow.providers.google.cloud.hooks.kms.CloudKMSHook",
    },
    "gcp_mlengine_hook": {
        "MLEngineHook": "airflow.providers.google.cloud.hooks.mlengine.MLEngineHook",
    },
    "gcp_natural_language_hook": {
        "CloudNaturalLanguageHook": (
            "airflow.providers.google.cloud.hooks.natural_language.CloudNaturalLanguageHook"
        ),
    },
    "gcp_pubsub_hook": {
        "PubSubException": "airflow.providers.google.cloud.hooks.pubsub.PubSubException",
        "PubSubHook": "airflow.providers.google.cloud.hooks.pubsub.PubSubHook",
    },
    "gcp_spanner_hook": {
        "SpannerHook": "airflow.providers.google.cloud.hooks.spanner.SpannerHook",
        "CloudSpannerHook": "airflow.providers.google.cloud.hooks.spanner.SpannerHook",
    },
    "gcp_speech_to_text_hook": {
        "CloudSpeechToTextHook": "airflow.providers.google.cloud.hooks.speech_to_text.CloudSpeechToTextHook",
        "GCPSpeechToTextHook": "airflow.providers.google.cloud.hooks.speech_to_text.CloudSpeechToTextHook",
    },
    "gcp_sql_hook": {
        "CloudSQLDatabaseHook": "airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLDatabaseHook",
        "CloudSQLHook": "airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLHook",
        "CloudSqlDatabaseHook": "airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLDatabaseHook",
        "CloudSqlHook": "airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLHook",
    },
    "gcp_tasks_hook": {
        "CloudTasksHook": "airflow.providers.google.cloud.hooks.tasks.CloudTasksHook",
    },
    "gcp_text_to_speech_hook": {
        "CloudTextToSpeechHook": "airflow.providers.google.cloud.hooks.text_to_speech.CloudTextToSpeechHook",
        "GCPTextToSpeechHook": "airflow.providers.google.cloud.hooks.text_to_speech.CloudTextToSpeechHook",
    },
    "gcp_transfer_hook": {
        "CloudDataTransferServiceHook": (
            "airflow.providers.google.cloud.hooks.cloud_storage_transfer_service.CloudDataTransferServiceHook"
        ),
        "GCPTransferServiceHook": (
            "airflow.providers.google.cloud.hooks.cloud_storage_transfer_service.CloudDataTransferServiceHook"
        ),
    },
    "gcp_translate_hook": {
        "CloudTranslateHook": "airflow.providers.google.cloud.hooks.translate.CloudTranslateHook",
    },
    "gcp_video_intelligence_hook": {
        "CloudVideoIntelligenceHook": (
            "airflow.providers.google.cloud.hooks.video_intelligence.CloudVideoIntelligenceHook"
        ),
    },
    "gcp_vision_hook": {
        "CloudVisionHook": "airflow.providers.google.cloud.hooks.vision.CloudVisionHook",
    },
    "gcs_hook": {
        "GCSHook": "airflow.providers.google.cloud.hooks.gcs.GCSHook",
        "GoogleCloudStorageHook": "airflow.providers.google.cloud.hooks.gcs.GCSHook",
    },
    "gdrive_hook": {
        "GoogleDriveHook": "airflow.providers.google.suite.hooks.drive.GoogleDriveHook",
    },
    "grpc_hook": {
        "GrpcHook": "airflow.providers.grpc.hooks.grpc.GrpcHook",
    },
    "imap_hook": {
        "ImapHook": "airflow.providers.imap.hooks.imap.ImapHook",
        "Mail": "airflow.providers.imap.hooks.imap.Mail",
        "MailPart": "airflow.providers.imap.hooks.imap.MailPart",
    },
    "jenkins_hook": {
        "JenkinsHook": "airflow.providers.jenkins.hooks.jenkins.JenkinsHook",
    },
    "jira_hook": {
        "JiraHook": "airflow.providers.atlassian.jira.hooks.jira.JiraHook",
    },
    "mongo_hook": {
        "MongoHook": "airflow.providers.mongo.hooks.mongo.MongoHook",
    },
    "openfaas_hook": {
        "OK_STATUS_CODE": "airflow.providers.openfaas.hooks.openfaas.OK_STATUS_CODE",
        "OpenFaasHook": "airflow.providers.openfaas.hooks.openfaas.OpenFaasHook",
        "requests": "airflow.providers.openfaas.hooks.openfaas.requests",
    },
    "opsgenie_alert_hook": {
        "OpsgenieAlertHook": "airflow.providers.opsgenie.hooks.opsgenie.OpsgenieAlertHook",
    },
    "pagerduty_hook": {
        "PagerdutyHook": "airflow.providers.pagerduty.hooks.pagerduty.PagerdutyHook",
    },
    "pinot_hook": {
        "PinotAdminHook": "airflow.providers.apache.pinot.hooks.pinot.PinotAdminHook",
        "PinotDbApiHook": "airflow.providers.apache.pinot.hooks.pinot.PinotDbApiHook",
    },
    "redis_hook": {
        "RedisHook": "airflow.providers.redis.hooks.redis.RedisHook",
    },
    "redshift_hook": {
        "RedshiftHook": "airflow.providers.amazon.aws.hooks.redshift_cluster.RedshiftHook",
    },
    "sagemaker_hook": {
        "LogState": "airflow.providers.amazon.aws.hooks.sagemaker.LogState",
        "Position": "airflow.providers.amazon.aws.hooks.sagemaker.Position",
        "SageMakerHook": "airflow.providers.amazon.aws.hooks.sagemaker.SageMakerHook",
        "argmin": "airflow.providers.amazon.aws.hooks.sagemaker.argmin",
        "secondary_training_status_changed": (
            "airflow.providers.amazon.aws.hooks.sagemaker.secondary_training_status_changed"
        ),
        "secondary_training_status_message": (
            "airflow.providers.amazon.aws.hooks.sagemaker.secondary_training_status_message"
        ),
    },
    "salesforce_hook": {
        "SalesforceHook": "airflow.providers.salesforce.hooks.salesforce.SalesforceHook",
        "pd": "airflow.providers.salesforce.hooks.salesforce.pd",
    },
    "segment_hook": {
        "SegmentHook": "airflow.providers.segment.hooks.segment.SegmentHook",
        "analytics": "airflow.providers.segment.hooks.segment.analytics",
    },
    "sftp_hook": {
        "SFTPHook": "airflow.providers.sftp.hooks.sftp.SFTPHook",
    },
    "slack_webhook_hook": {
        "SlackWebhookHook": "airflow.providers.slack.hooks.slack_webhook.SlackWebhookHook",
    },
    "snowflake_hook": {
        "SnowflakeHook": "airflow.providers.snowflake.hooks.snowflake.SnowflakeHook",
    },
    "spark_jdbc_hook": {
        "SparkJDBCHook": "airflow.providers.apache.spark.hooks.spark_jdbc.SparkJDBCHook",
    },
    "spark_sql_hook": {
        "SparkSqlHook": "airflow.providers.apache.spark.hooks.spark_sql.SparkSqlHook",
    },
    "spark_submit_hook": {
        "SparkSubmitHook": "airflow.providers.apache.spark.hooks.spark_submit.SparkSubmitHook",
    },
    "ssh_hook": {
        "SSHHook": "airflow.providers.ssh.hooks.ssh.SSHHook",
    },
    "vertica_hook": {
        "VerticaHook": "airflow.providers.vertica.hooks.vertica.VerticaHook",
    },
    "wasb_hook": {
        "WasbHook": "airflow.providers.microsoft.azure.hooks.wasb.WasbHook",
    },
    "winrm_hook": {
        "WinRMHook": "airflow.providers.microsoft.winrm.hooks.winrm.WinRMHook",
    },
}

add_deprecated_classes(__deprecated_classes, __name__)
